home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 081-090 / amok89 / gtb-oberon / readme < prev    next >
Text File  |  1993-11-04  |  6KB  |  158 lines

  1. GadToolsBox's great Oberon Source Generator
  2. ===========================================
  3.  
  4. This is the second release of the external Oberon source generator for
  5. GadToolsBox 2.x.  Please use it instead of the built in source generator
  6. because some the internal version is buggy and will not be updated any more.
  7.  
  8. Let's explan the history of generating Oberon source with GadToolsBox:
  9. I (Kai Bolay) thougt that it would be a good idea that GadToolsBox supports
  10. Oberon so I changed Jan van den Baard's C generator "GenC.c" to
  11. "GenOberon.c" and asked Jan to add it to GTB. With GTB 2.0 Jan came up with
  12. the idea of external source generators. Jan helped me (in fact he did all
  13. the work! Thanks, Jan!) to make "GenOberon.c" a standalone program. Now
  14. Thomas Igracki did the great job of converting to C program "GenOberon.c"
  15. to the Oberon program "OG.mod". I did some minor modifications to "OG.mod"
  16. and released it.
  17.  
  18. Please feel free to use "OG.mod" to make generators for other languages
  19. similar to Oberon like Modula-2 or Pascal. But please inform me.
  20.  
  21. The usage of "OG" is very simple.  It has four parameters:  The first
  22. parameter is the name of the GUI file which should be converted, the second
  23. is  the name of the source which should be generated.  The other parameters
  24. are switches which speak for themselfes.
  25.  
  26. To see how to use the generated source see the subdirectory "Demo".
  27.  
  28. Here's a little overview of the generated source:
  29.  
  30. If you use the getfile gadget the generated source will automatically
  31. import the module "GetFile" which initializes the boopsi image. You can
  32. find this module in the subdirectory "GetFile".
  33.  
  34. From here on when I refer to <Project-Name> I mean the name entered in the
  35. Edit Data requester from the Window menu and when I refer to <Gadget-Label>
  36. I mean the name you have typed in the "Label" gadget of one of the gadget
  37. kind requesters.  When I refer to <Menu-Label> I mean the label you have
  38. typed in the Label gadget of the Menu Editor.
  39.  
  40. The following exported routines are generated:
  41.  
  42. »»»»» PROCEDURE SetupScreen (): INTEGER
  43. »
  44. » This routine will open or lock the screen and get it's visual info.
  45. » When requested this routine will also  open the font.
  46. » This  routine  can  return  one of the following errors:
  47. »
  48. »     0 = No error.
  49. »     1 = Could not open or lock the screen.
  50. »     2 = Could not get the screen it's visual info.
  51. »     5 = Could not open the font.
  52.  
  53. »»»»» PROCEDURE CloseDownScreen;
  54. »
  55. » This routine will free the resources taken by "SetupScreen()".  You
  56. » must still call this routine when  "SetupScreen()"  failed to close
  57. » and free the resources that didn't fail to open!!!
  58.  
  59. »»»»» PROCEDURE Create<Project-Name>Gadgets (createGads: BOOLAN): INTEGER;
  60. »
  61. » There are as much of these routines as there are Project Windows in
  62. » the file you have generated. These routines will set-up the gadgets.
  63. » These routines can return one of the following errors:
  64. »
  65. »     0 = No error.
  66. »     1 = Could not create a gadget context.
  67. »     2 = Error during the gadget creation.
  68.  
  69. »»»»» PROCEDURE Open<Project-Name>Window (createGads: BOOLAN): INTEGER;
  70. »
  71. » There are as much of these routines as there are Project Windows in
  72. » the file you have generated. These routines will set-up the gadgets
  73. » (if you ask for it) and menus and open the window. These routines can
  74. » return one of the following errors:
  75. »
  76. »     0 = No error.
  77. »     1 = Could not create a gadget context.
  78. »     2 = Error during the gadget creation.
  79. »     3 = Could not create the menus.
  80. »     4 = Could not open the window.
  81. »     5 = Could not open the system font.
  82.  
  83. »»»»» PROCEDURE Close<Project-Name>Window;
  84. »
  85. » There are as much of these routines as there are Project Windows in
  86. » the file you have generated. These routines will free all resources
  87. » that the "Open<Project-Name>Window()" routine has taken.  You  must
  88. » still call this routine if "Open<Project-Name>Window()" has failed!
  89.  
  90. »»»»» PROCEDURE <Project-Name>Render;
  91. »
  92. » Each Project Window which has texts and/or BevelBoxes  attached  to
  93. » it will have a routine which renders these texts and/or  BevelBoxes
  94. » in the window. This routine must also be called by the user program
  95. » upon  receiving  a IDCMP-REFRESHWINDOW message at the  window port.
  96. » When such a message  is received  this  routine   must  be   called
  97. » between   the   gt.BeginRefresh()  and gt.EndRefresh() calls.  Here
  98. » is a  small example of what I mean:
  99. »
  100. » IF (I.refreshWindow IN class) THEN
  101. »   gt.BeginRefresh (<Project-Name>Wnd);
  102. »   <Project-Name>Render;
  103. »   gt.EndRefresh (<Project-Name>Wnd, I.LTRUE);
  104. » END;
  105.  
  106. The main file also has the following globals defined  which are shared by
  107. all project windows:
  108.  
  109. »  Scr: I.ScreenPtr;             A pointer to the opened/locked screen
  110. »  VisualInfo: e.APTR;           A pointer to the visual info
  111.  
  112. The following globals are only  generated when the file contains  gadgets
  113. or menus and when the OpenFont routine is generated and  when  the window
  114. must have a zoom gadget:
  115.  
  116. »  <Project-Name>GList: I.GadgetPtr;         The created gadgets
  117. »  <Project-Name>Menus: I.MenuPtr;           The created menus
  118. »  <Project-Name>Zoom: ARRAY 4 OF INTEGER;   The window alternate positions
  119. »  Font: g.TextAttrPtr;                      The opened font
  120.  
  121. Also  generated  are  pointers for each project window that is in memory:
  122.  
  123. »  <Project-Name>Wnd: I.WindowPtr;        A pointer to the window
  124.  
  125. Four constant are generated for each window.  These words contain the
  126. window's left and topedge and it's width and height:
  127.  
  128. »  <Project-Name>Left     Window left-edge
  129. »  <Project-Name>Top      Window top-edge
  130. »  <Project-Name>Width    Window width
  131. »  <Project-Name>Height   Window height
  132.  
  133. Also the main  file contains  the Gadget  Array's for each project window
  134. which are define as follows:
  135.  
  136. »  <Project-Name>Gadgets: ARRAY <Project-Name> OF I.GadgetPtr;
  137.  
  138. To access the pointers in this array the  program  generates  constants
  139. which specify the position of  a certain  gadget in  the array:
  140.  
  141. »  GD<Gadget-Label>
  142.  
  143. If you have questions, suggestions, bugs, donations, ... please contact:
  144.  
  145. Thomas Igracki
  146. Snail Mail:              EMail:
  147. Obstallee 45             UseNet -> lokai@cs.tu-berlin.de
  148. 13593 Berlin             Z-Netz -> T.Igracki@BAMP.ZER
  149. Germany                  Fido   -> Thomas Igracki (2:2403/10.40)
  150.  
  151. and/or
  152.  
  153. Kai Bolay [kai]
  154. Snail Mail:              EMail:
  155. Hoffmannstraße 168       UUCP: kai@amokle.stgt.sub.org
  156. D-71229 Leonberg         FIDO: 2:2407/106.3
  157. Germany
  158.